<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>01.同步和异步</title>
  </head>

  <body>
    <script>
      /*
         ajax({
            url:"",
            success(data) {

                 ajax({
                    url:"",
                    success(data) {
                             ajax({
                                url:"",
                                success(data) {
                                    
                                }
                            })
                        
                    }
                })

            }
         })

         

       
        
        */
      /*
         异步: 并发执行
           变为同步： 通过回调函数
         同步: 前面执行完毕  后面再执行

         回到地狱： 纵向排列
            方法1 
               方法2
                 方法3
        解决回调地狱： 将纵向的转为横向的 
            方法1   ---- 方法2   ----方法3
        */
      /*
         打印需求: 1 新增商品  2 修改商品  3 删除商品
        */
      function addGoods() {
        console.log("1.新增商品"); // 3s
      }

      function editGoods() {
        console.log("2.修改商品"); // 2s
      }

      function delGoods() {
        console.log("3.删除商品"); // 1s
      }

      function execute(func, timeout) {
        setTimeout(func, timeout);
      }
      // 嵌套回调函数  称之为 回调地狱
      execute(() => {
        addGoods();
        execute(() => {
          editGoods();
          execute(() => {
            delGoods();
            
          }, 1000);
        }, 2000);
      }, 3000);

      // 由上面的打印可以知道   settimeout  异步队列
      // 如何将异步转为同步呢   可以采用回调函数的方式
      // addGoods();
      // editGoods();
      // delGoods();
    </script>
  </body>
</html>
